package 程序员面试金典;

public class 插入 {

    //看不懂
    public int insertBits(int N, int M, int i, int j) {
        int ans = 0, bit;
        // m左移i位和要插入的位置对应上
        M <<= i;
        for (int k = 0; k < 32; k++) {
            // k在范围内时取在m中取位，不在范围时就去n中取位
            bit = (k >= i && k <= j) ? M & (1 << k) : N & (1 << k);
            // 按位动态构造就完事
            ans += bit;
        }
        return ans;
    }
}
